#ifndef LOGIC_BASE_H
#define LOGIC_BASE_H

#include <iostream>
#include <string>
#include <vector>
#include <sstream>

#include "Data.h"
#include "Task.h"
#include "Writer.h"
#include "Display.h"

#include <boost\date_time.hpp>

using namespace std;
using namespace boost::posix_time;
using namespace boost::gregorian;

class LogicBase {
public:
	static void initialize(Data*, Writer*);
	static Display getDisplay();
	LogicBase();

protected:
	// data and writer here
	static Data* _data;
	static Writer* _writer;

	// display
	static Display _display;

	virtual bool isOutOfBounds(int index, int size);
	virtual bool isMultipleMatches(int size);

	static const string NOT_FOUND_ERROR_MESSAGE;
	static const string INDEX_OUT_OF_BOUNDS_ERROR_MESSAGE;
	static const string FILE_EMPTY;
};
#endif